/**
 * - 在ES5中只有①全局作用域和②函数作用域
 * - ES6中新增块级作用域(对var声明的变量无效)
 *    有效的有：let/const/function/class
 *    大部分浏览器为了兼容以前的代码，让function没有块级作用域
 *    if(){} ==>是块级作用域
 *    switch(){} ==>块级作用域
 *    for(){} ==>块级作用域
 */
{
  var v1 = 'abc'
  let v2 = 'cna'
  
  function foo() {
    console.log('this is a inBlock function')
  }
}
console.log(v1)
// console.log(v2)  //v2 is not defined
foo()


//for(){} ==>块级作用域
for (var i = 0; i < 10; i++) {
  (function (n) {
    console.log(n)
  })(i)
  
}
console.log(i) //10
for (let j = 0; j < 10; j++) {

}
// console.log(j) //j is not defined
